﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Business;
using Data;
using System.Text.RegularExpressions;

namespace prototypes
{
    public partial class Administrador : Form
    {
        DataTable dataTableTemporal = new DataTable();
        private string usuario,tipoUsuario;
        public Administrador()
        {
            InitializeComponent();
        }
        public Administrador(string usuario,string tipoUsuario)
        {
            InitializeComponent();
            this.usuario = usuario;
            this.tipoUsuario = tipoUsuario;
            if (tipoUsuario == "recepcionista")
            {
                this.Hospedaje.TabPages.Remove(tabPage7);
                this.Hospedaje.TabPages.Remove(TPCuentasPersonal);
            }
        }

        private void button18_Click(object sender, EventArgs e)
        {
            AgregarHabitacion m = new AgregarHabitacion();
            m.ShowDialog();
        }

        private void button17_Click(object sender, EventArgs e)
        {
            AgregarHabitacion m = new AgregarHabitacion();
            m.ShowDialog();
        }

        private void button22_Click(object sender, EventArgs e)
        {
            RegistrarEmpleado m = new RegistrarEmpleado();
            m.ShowDialog();
        }

        private void button20_Click(object sender, EventArgs e)
        {
            PersonalDataAccess verInformacion = new PersonalDataAccess();
            try
            {
                int fila = DGDatosPersonal.CurrentRow.Index;
                if (fila != -1)
                {
                    ModificarDatosPersonal m = new ModificarDatosPersonal(verInformacion.buscarTodosDatos(DGDatosPersonal.Rows[fila].Cells[0].Value.ToString()),DGDatosPersonal.Rows[fila].Cells["Usuario"].Value.ToString(),DGDatosPersonal.Rows[fila].Cells["Activo"].Value.ToString(),tipoUsuario);
                    m.ShowDialog();
                    this.BTBuscar_Click(sender,e);
                }
            }
            catch (SystemException exeption)
            {
            }
        }

        private void button26_Click(object sender, EventArgs e)
        {
            RegistrarProducto m = new RegistrarProducto();
            m.ShowDialog();
        }

        private void TBBuscar_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (Validador.validarLetraConEspacio(e.KeyChar))
                e.Handled = false;
            else
                e.Handled = true;
        }

        private void BTBuscar_Click(object sender, EventArgs e)
        {
            DGDatosPersonal.Columns.Clear();
            if (TBBuscar.Text != "")
            {
                TBBuscar.Text = Regex.Replace(TBBuscar.Text, @"\s+", " "); 
                PersonalDataAccess buscarDataAccess = new PersonalDataAccess();
                dataTableTemporal=buscarDataAccess.buscarDatosLimitado(TBBuscar.Text.Trim());
                DGDatosPersonal.DataSource = dataTableTemporal;
                CuentasDataAccess buscarUsuario = new CuentasDataAccess();
                DGDatosPersonal.Columns.Add("Usuario", "usuario");
                DGDatosPersonal.Columns.Add("TipoCuenta", "tipo cuenta");
                DGDatosPersonal.Columns.Add("Activo", "activo");
                for (int i = 0; i <= DGDatosPersonal.RowCount - 1; i++)
                {
                    dataTableTemporal = buscarUsuario.buscarDatos(DGDatosPersonal.Rows[i].Cells[0].Value.ToString());
                    dg.DataSource = dataTableTemporal;
                    DGDatosPersonal.Rows[i].Cells["Usuario"].Value = dg.Rows[0].Cells[0].Value;
                    DGDatosPersonal.Rows[i].Cells["TipoCuenta"].Value = dg.Rows[0].Cells[1].Value;
                    DGDatosPersonal.Rows[i].Cells["Activo"].Value = dg.Rows[0].Cells[2].Value;
                }
            }
        }

        private void BTVerInformacionPersonal_Click(object sender, EventArgs e)
        {
            CuentasDataAccess cuentas = new CuentasDataAccess();
            PersonalDataAccess verInformacion = new PersonalDataAccess();
            try
            {
                int fila = DGDatosPersonal.CurrentRow.Index;
                if (fila != -1)
                {
                    string usuario = DGDatosPersonal.Rows[fila].Cells["Usuario"].Value.ToString();
                    VerDetallePersonalII verDetallePersonal = new VerDetallePersonalII(verInformacion.buscarTodosDatos(DGDatosPersonal.Rows[fila].Cells[0].Value.ToString()),usuario);
                    verDetallePersonal.ShowDialog();
                }
            }
            catch (SystemException exeption)
            {
            }
        }

        private void BTEditarDatosCuenta_Click(object sender, EventArgs e)
        {
                Modificar_Datos_Cuenta modificarDatosCuenta = new Modificar_Datos_Cuenta(usuario);
                modificarDatosCuenta.ShowDialog();
        }

        private void BTEditarDatosPersonales_Click(object sender, EventArgs e)
        {
            if(tipoUsuario=="recepcionista")
            {
                PersonalDataAccess verInformacion = new PersonalDataAccess();
                CuentasDataAccess obtenerNumeroDocumento = new CuentasDataAccess();
                ModificarDatosPersonal m = new ModificarDatosPersonal(verInformacion.buscarTodosDatos(obtenerNumeroDocumento.obtenerNumeroDocumento(usuario)), usuario, "si", tipoUsuario);
                m.ShowDialog();
            }
        }

        private void BTReservar_Click(object sender, EventArgs e)
        {
            ReservasDataAccess buscarReservas = new ReservasDataAccess();
            try
            {
                int fila = DGReservas.CurrentRow.Index;
                if (fila != -1)
                {
                    string numeroHabitacion = DGReservas.Rows[fila].Cells["numeroHabitacion"].Value.ToString();
                    AsignarHabitacion m = new AsignarHabitacion(numeroHabitacion);
                    m.ShowDialog();
                }
            }
            catch (SystemException exeption)
            {
            }
        }

        private void Reservas_Enter(object sender, EventArgs e)
        {

        }

        private void TBBuscarReservas_Click(object sender, EventArgs e)
        {
            DGReservas.Columns.Clear();
            ReservasDataAccess buscarDataAccess = new ReservasDataAccess();
            if (CBTipoBusqueda.Text == "Fecha")
            {
                dataTableTemporal = buscarDataAccess.buscarReservaFecha(DTFechaLlegada.Value.Date);
                DGReservas.DataSource = dataTableTemporal;
            }
            else
            {
                if (TBNombreReserva.Text != "")
                {
                    TBBuscarReservas.Text = Regex.Replace(TBBuscarReservas.Text, @"\s+", " ");
                    dataTableTemporal = buscarDataAccess.buscarReserva(TBNombreReserva.Text.Trim());
                    DGReservas.DataSource = dataTableTemporal;
                }
            }
        }

        private void CBTipoBusqueda_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = true;
        }

        private void CBTipoBusqueda_SelectionChangeCommitted(object sender, EventArgs e)
        {
            if (CBTipoBusqueda.Text == "Nombre")
            {
                DTFechaLlegada.Show();
                TBNombreReserva.Hide();
            }
            else
            {
                DTFechaLlegada.Hide();
                TBNombreReserva.Show();
            }
        }

        private void BTDetalle_Click(object sender, EventArgs e)
        {
            ClienteDataAccess cuentas = new ClienteDataAccess();
            ReservasDataAccess verInformacion = new ReservasDataAccess();
            try
            {
                int fila = DGReservas.CurrentRow.Index;
                if (fila != -1)
                {
                    string numeroDocumento = DGReservas.Rows[fila].Cells[0].Value.ToString();
                    string fechaLlegada = DGReservas.Rows[fila].Cells[1].Value.ToString();
                    string numeroHabitacion = DGReservas.Rows[fila].Cells[2].Value.ToString();
                    VerReserva verDetallePersonal = new VerReserva(verInformacion.buscarTodosDatos(numeroDocumento,fechaLlegada,numeroHabitacion));
                    verDetallePersonal.ShowDialog();
                }
            }
            catch (SystemException exeption)
            {
            }
        }

        private void TBNombreReserva_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (Validador.validarLetraConEspacio(e.KeyChar))
                e.Handled = false;
            else
                e.Handled = true;
        }
    }
}
